package com.yswy.common.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Objects;

/**
 * @author 19401
 * @date 2022/5/24 16:37
 **/
public class MoneyUtils {
    public static BigDecimal toMoney(Object money) {
//        BigDecimal bigDecimal = new BigDecimal("0");
//        return Objects.isNull(money) ? bigDecimal : "0".equals(money.toString()) ? bigDecimal :
//                new BigDecimal(money.toString()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
        return toMoney(money, 100);
    }

    public static BigDecimal toMoney(Object sta, Object end) {
        return toMoney(sta, end, 2);
    }
    public static BigDecimal toMoney(Object sta, Object end, Integer scale) {
        BigDecimal bigDecimal = new BigDecimal("0");
        if (Objects.isNull(sta) || sta.toString().equals("0") || Objects.isNull(end) || end.toString().equals("0")) return bigDecimal;
        BigDecimal staBigDecimal = new BigDecimal(sta.toString());
        BigDecimal endBigDecimal = new BigDecimal(end.toString());
        return staBigDecimal.divide(endBigDecimal, scale, RoundingMode.DOWN);
    }
    public static String percentage(Object sta, Object end) {
        NumberFormat percent = NumberFormat.getPercentInstance();
        percent.setMaximumFractionDigits(2);
        BigDecimal bigDecimal = toMoney(sta, end, 4);
        return percent.format(bigDecimal.doubleValue());
    }
    public static String toMoneyStr(Object money) {
        if (!Objects.isNull(money) && Objects.equals(money, "0")) {
            return "0";
        }
        return toMoney(money).toString();
    }

    public static BigDecimal toSum(Object money) {
        return new BigDecimal(money.toString()).multiply(new BigDecimal("100"));
    }

    public static void main(String[] args) {
        Integer sta = 2452688;
        Integer end = 3019600;
        BigDecimal bigDecimal = toMoney(sta, end, 4);
        System.out.println(bigDecimal);
        System.out.println(percentage(sta, end));
    }
}
